<?php

namespace App\Jobs;

use App\Logics\CourseTimeLogic;
use App\Models\Course;
use App\Models\CourseCycle;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Carbon;

class CourseCycleJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;


    public $param;
    public $course_id;

    // 根据课程周期 计算 课程的上课时间

    /***
     * 队列处理器是长生命周期的进程，并将启动的应用程序状态存储在内存中。因此，在启动它们之后，代码库中的更改对其不起作用。
     *    因此，在部署过程中，一定要重新启动你的队列处理器。
     *    此外，请记住，应用程序创建或修改的任何静态状态不会在任务之间自动重置。
     *
     * 一直保持运行，直到它被手动停止或你关闭你的终端
     * php artisan queue:work --queue=laravel_task
     *
     * php artisan queue:listen  --queue=laravel_task
     *
     * php artisan queue:listen --queue=队列名称 --once  --max-jobs=1000
     *
     * php artisan queue:restart
     *
     */

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($param = '')
    {
        $this->param     = $param;
        $this->course_id = $param['course_id'];
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //$logger = new LogFile();
        //$logger->write('Hello, '.var_export($this->param, 1), 'info');

        $course_id = $this->course_id;
        $result    = (new CourseTimeLogic())->makeTimeByCycle($course_id);


        return $this->delete();

        //return $result;
    }


}
